* xdisp.c (display_text_line): Apply faces to characters according
authorJim Blandy <jimb@redhat.com>
Mon, 10 May 1993 00:16:34 +0000 (00:16 +0000)
committerJim Blandy <jimb@redhat.com>
Mon, 10 May 1993 00:16:34 +0000 (00:16 +0000)
to overlays and text properties; use compute_char_face to figure out
what face to use, and where a new face starts.
* xterm.c (dumpglyphs): Use the upper bits of the glyphs to decide
which frame face to use.  Call GLYPH_FOLLOW_ALIASES to make sure
we're implementing the glyph table properly.  If we're not using
the default or mode line face, call intern_face to find a display
face for the frame face selected by the glyph code.  Implement
underlining.  Remove the `font' argument; we have to derive this
from the frame and face anyway.  Change all callers.
* disptab.h (GLYPH_FOLLOW_ALIASES): New macro.

src/disptab.h

index 37f4bc76db204013c3b56b86fc0bd5ec7eeccd6b..d8a4c9ab06d80a2997a86d8a7d670daae3776889 100644 (file)
@@ -63,6 +63,12 @@ extern Lisp_Object Vglyph_table;
    return the alias for G.  */
 #define GLYPH_ALIAS(base, g) XINT (base[g])
 
+/* Follow all aliases for G in the glyph table given by (BASE,
+   LENGTH), and set G to the final glyph.  */
+#define GLYPH_FOLLOW_ALIASES(base, length, g)                          \
+  while (GLYPH_ALIAS_P ((base), (length), (g)))                                \
+    (g) = GLYPH_ALIAS ((base), (g));
+  
 /* Assuming that GLYPH_SIMPLE_P (BASE, LEN, G) is 0,
    return the length and the address of the character-sequence
    used for outputting GLYPH G.  */